package com.example.demo.controller;

import com.example.demo.model.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;


//@ResponseBody // 返回非静态页面的数据
// @ResponseBody：修饰类：表示当前类中所有的方法都会返回一个非静态页面的数据
//               修饰方法：表示当前方法返回一个非静态页面的数据

//@RestController // @Controller + @ResponseBody
@Controller
@RequestMapping("/test")
public class TestController {

    @RequestMapping("/sayhi")
    public String sayHi(){
        //return "hello.html"; // 默认情况下返回的是静态页面的名称
         return "333";
    }

    @RequestMapping("/login1")
    public HashMap<String ,Object> login1(String username,String password){
        HashMap<String ,Object> result = new HashMap<String,Object>();
        int state = 200;
        int data = -1;
        String msg = "未知错误";
        if (StringUtils.hasLength(username) && StringUtils.hasLength(password)){
            if(username.equals("admin") && password.equals("admin")){
                data = 1;
                msg = "";
            }else {
                msg = "用户名或密码失败";
            }
        }else { // 参数为空
            msg = "非法参数";
        }
        result.put("state",state);
        result.put("data",data);
        result.put("msg",msg);
        return result;
    }


    /*
    * 获取前端的 JSON 数据
    * */
    @RequestMapping("/login2")
    public HashMap<String ,Object> login2(@RequestBody UserInfo userInfo){
        HashMap<String ,Object> result = new HashMap<String,Object>();
        int state = 200;
        int data = -1;
        String msg = "未知错误";
        if (StringUtils.hasLength(userInfo.getUsername())
                && StringUtils.hasLength(userInfo.getPassword())){
            if(userInfo.getUsername().equals("admin") &&
                    userInfo.getPassword().equals("admin")){
                data = 1;
                msg = "";
            }else {
                msg = "用户名或密码失败";
            }
        }else { // 参数为空
            msg = "非法参数";
        }
        result.put("state",state);
        result.put("data",data);
        result.put("msg",msg);
        return result;
    }

    /*
    * 请求转发实现方式 1
    * 请求转发是服务器端帮用户实现的
    * */
    @RequestMapping("/fw")
    public String myForward(){
        return "forward:/hello.html";
    }
    /*
    * 请求转发实现方式 1.1
    * */
    @RequestMapping("/fw1")
    public String myForward1(){
        return "/hello.html";
    }


    /*
    * 请求转发实现方式 1
    * */
    @RequestMapping("/fw2")
    public void myForward2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/hello.html").forward(request,response);
    }

    /*
     * 请求重定向实现方式 1
     * 重定向的请求发生在客户端（浏览器端），服务器端不会替用户进行请求操作
     * */
    @RequestMapping("/rd")
    public String myRedirect(){
        return "redirect:/hello.html";
    }

    /*
     * 请求重定向实现方式 2
     * 重定向的请求发生在客户端（浏览器端），服务器端不会替用户进行请求操作
     * */
    @RequestMapping("/rd2")
    public void myRedirect2(HttpServletResponse response) throws IOException {
        response.sendRedirect("/hello.html");
    }
}
